//
//  Eyepiece+Output.swift
//  WatermarkCamera
//
//  Created by AxcLogo on 4/7/2024.
//

import UIKit
import Foundation

extension Eyepiece {
    /// 添加一组输出类型
    /// 输出可以是多组
    /// - Parameter outputs: 输出集合
    func appendOutputs(_ outputs: [OutputProtocol]) {
        beginOutputResponseChain() // 准备开始

        self.outputs.append(contentsOf: outputs)

        commitOutputResponseChain() // 提交更新
    }

    /// 添加输出类型
    /// - Parameter output: 输出
    func appendOutput(_ output: OutputProtocol) {
        beginOutputResponseChain() // 准备开始

        outputs.append(output)

        commitOutputResponseChain() // 提交更新
    }

    /// 移除输出
    /// - Parameter index: 索引
    func removeOutput(at index: Int) {
        beginOutputResponseChain() // 准备开始

        outputs.remove(at: index)

        commitOutputResponseChain() // 提交更新
    }
}

extension Eyepiece {
    /// 准备开始刷新输出响应链
    func beginOutputResponseChain() {
        watermarkChain.footer.removeAllTargets()
    }

    /// 提交刷新输出响应链
    func commitOutputResponseChain() {
        for output in outputs {
            output.setOutput(watermarkChain.footer)
        }
    }
}
